package mlz.a_stram;

import java.sql.Array;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

/*
中间方法
 */
public class StreamDemo03 {
    public static void main(String[] args) {
        // 需求1：找出成绩大于等于60分的数据，并升序后，再输出。
        ArrayList<Integer> scores = new ArrayList<>();
        Collections.addAll(scores,88,99,59,60,49,78,90);
        scores.stream().filter(s -> s >= 60).sorted().forEach(s -> System.out.println(s));

        System.out.println("----------------------------");

        // 需求2：找出年龄大于等于23,且年龄小于等于30岁的学生，并按照年龄降序输出.
        ArrayList<Student> students = new ArrayList<>();
        students.add(new Student("张三",30,170));
        students.add(new Student("李四",17,158));
        students.add(new Student("王五",23,178.8));
        students.add(new Student("赵六",24,166));
        students.add(new Student("张三",18,186));
        students.stream()
                .filter(s -> s.getAge() >= 23 && s.getAge() <= 30)
                .sorted((o1,o2) -> o2.getAge() - o1.getAge())
                .forEach(s -> System.out.println(s));

        System.out.println("----------------------------");

        // 需求3：取出身高最高的前3名学生，并输出。
        students.stream()
                .sorted((o1, o2) -> Double.compare(o2.getHeight(),o1.getHeight()))
                .limit(3)
                .forEach(System.out::println);

        System.out.println("----------------------------");

        // 需求4：取出身高倒数的2名学生，并输出。
        students.stream()
                .sorted((o1, o2) -> Double.compare(o2.getHeight(),o1.getHeight()))
                .skip(students.size() - 2)
                .forEach(System.out::println);

        System.out.println("----------------------------");

        // 需求5：找出身高超过168的学生叫什么名字，要求去除重复的名字，再输出。
        students.stream()
                .filter(s -> s.getHeight() > 168)
                .map(Student::getName)
                .distinct()
                .forEach(System.out::println);



    }
}















